﻿Public Class frmStop

    Private mvarDbHolder As clsDataBase
    Private mvarStop As clsInhStop
    Private mvarNumerPozycji As Integer
    Private mvarBlokowanie As clsRecordLock
    Private mvarWyznBlokowania As Boolean = False
    Private mvarUzytkownik As clsUzytkownik
    Private mvarTmpNazwa As String
    Private mvarWyznUruchomienia As Boolean
    Private mvarCheckList As List(Of CheckBox)
    Private mvarWyznNowy As Boolean

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)
        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)
        mvarCheckList = New List(Of CheckBox)
        PokazPierwiastki()
        mvarWyznUruchomienia = True
        Szukaj()

    End Sub

    Private Sub Szukaj()

        Dim lvarCommand As String
        Dim lvarI As Integer
        Dim lvarWyzn As Boolean = False

        lvarCommand = String.Empty
        If txtNazwa.Text = String.Empty Then
            mvarStop = New clsInhStop
            mvarStop.Szukaj(mvarDbHolder, lvarCommand)
        Else
            lvarCommand = "WHERE "
            If txtNazwa.Text <> String.Empty Then
                lvarCommand = lvarCommand + "UPPER (nazwa) LIKE UPPER('" & txtNazwa.Text & "%')"
                lvarWyzn = True
            End If
            mvarStop = New clsInhStop
            mvarStop.Szukaj(mvarDbHolder, lvarCommand)
        End If
        dgvInformacje.Rows.Clear()

        If mvarStop.NazwaStop.Rows.Count = 0 And mvarWyznUruchomienia = False Then
            MessageBox.Show("Nie ma takiego stopa.", "WIREMET")
        Else
            For Each lvarRow As DataRow In mvarStop.NazwaStop.Rows
                lvarI += 1
                dgvInformacje.Rows.Add(lvarI, CType(lvarRow.Item("stop"), clsStop).Nazwa)
                dgvInformacje.Rows(lvarI - 1).Tag = lvarRow.Item("stop")
            Next
        End If
        mvarWyznUruchomienia = False

    End Sub

    Private Sub Blokowanie()

        mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, CLng(CType(dgvInformacje.SelectedRows(0).Tag, clsInhStop).Id), "oem.stop", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
        mvarWyznBlokowania = True

        If Not mvarBlokowanie.RecordLocked Then
            MessageBox.Show("TYLKO DO ODCZYTU.", "WIREMET")
        Else
            grbPoleEdycji.Enabled = True
        End If

    End Sub

    Private Sub Wyczysc()
        txtNazwa.Text = String.Empty
    End Sub

    Private Sub WyczyscInfomacje()

        txtNowaNazwa.Text = String.Empty
        For Each lvarCheck As CheckBox In mvarCheckList
            lvarCheck.Checked = False
        Next
        grbPoleEdycji.Enabled = False

    End Sub

    Private Sub PokazPierwiastki()

        Dim lvarPierwiastek As clsInhPierwiastek
        Dim lvarI As Integer = 0
        Dim lvarJ As Integer = 30
        Dim lvarLicznik As Integer = 0
        Dim lvarHeight As Integer = 30

        If mvarCheckList.Count <> 0 Then
            For Each lvarCheck As CheckBox In mvarCheckList
                grbPoleEdycji.Controls.Remove(lvarCheck)
            Next
            mvarCheckList.Clear()
            Me.Height = 357
        End If
        lvarPierwiastek = New clsInhPierwiastek
        lvarPierwiastek.Szukaj(mvarDbHolder, String.Empty)

        For Each lvarPozycja As clsPierwiastek In lvarPierwiastek.Pierwiastek
            Dim lvarCheck As New CheckBox()
            lvarCheck.Tag = lvarPozycja
            lvarCheck.Text = lvarPozycja.Nazwa
            lvarCheck.Location = New Point(40 + lvarI, txtNowaNazwa.Location.Y + lvarJ)
            lvarCheck.Width = 60
            grbPoleEdycji.Controls.Add(lvarCheck)
            Me.Height = CInt(Me.Height + lvarHeight)
            lvarHeight = 0
            mvarCheckList.Add(lvarCheck)
            lvarLicznik = lvarLicznik + 1
            If lvarLicznik = 8 Then
                lvarI = 0
                lvarJ = lvarJ + 30
                lvarLicznik = 0
                lvarHeight = lvarHeight + 30
            Else
                lvarI = lvarI + 70
            End If
        Next

    End Sub


    Private Sub Zapisz()

        mvarStop = New clsInhStop

        With mvarStop
            .Nazwa = txtNowaNazwa.Text
            .Sklad.Clear()
            AktualizacjaPierwiastkow()
            .Save(mvarDbHolder)
        End With
        dgvInformacje.Rows.Clear()
        WyczyscInfomacje()
        Szukaj()

    End Sub

    Private Sub Zmien()

        mvarStop = New clsInhStop

        With mvarStop
            .Id = CType(dgvInformacje.SelectedRows.Item(0).Tag, clsStop).Id
            .Nazwa = txtNowaNazwa.Text
            .Sklad.Clear()
            AktualizacjaPierwiastkow()
            .Save(mvarDbHolder)
        End With
        dgvInformacje.Rows.Clear()
        WyczyscInfomacje()
        Szukaj()

    End Sub

    Private Sub UzupelnijDane()

        For Each lvarCheck As CheckBox In mvarCheckList
            lvarCheck.Enabled = True
        Next
        For Each lvarSklad As clsInhSklad In CType(dgvInformacje.Rows.Item(mvarNumerPozycji).Tag, clsInhStop).Sklad
            For Each lvarCheck As CheckBox In mvarCheckList
                If CType(lvarCheck.Tag, clsPierwiastek).Id = lvarSklad.PierwiastekId Then
                    lvarCheck.Checked = True
                    lvarCheck.Enabled = False
                End If
            Next
        Next

    End Sub

    Private Sub AktualizacjaPierwiastkow()

        Dim lvarWyzn As Boolean = False
        Dim lvarTmp As clsInhSklad

        If dgvInformacje.SelectedRows.Count > 0 Then
            For Each lvarSklad As clsInhSklad In CType(dgvInformacje.SelectedRows(0).Tag, clsInhStop).Sklad
                For Each lvarCheck As CheckBox In mvarCheckList
                    If lvarSklad.PierwiastekId = CType(lvarCheck.Tag, clsPierwiastek).Id And Not lvarCheck.Checked Then
                        mvarStop.SkladDel.Add(lvarSklad)
                    End If
                Next
            Next


            For Each lvarCheck As CheckBox In mvarCheckList
                If lvarCheck.Checked = True Then
                    If dgvInformacje.SelectedRows.Count > 0 And Not mvarWyznNowy Then
                        For Each lvarSklad As clsInhSklad In CType(dgvInformacje.SelectedRows(0).Tag, clsInhStop).Sklad
                            If lvarSklad.PierwiastekId = CType(lvarCheck.Tag, clsPierwiastek).Id Then
                                lvarWyzn = True
                            End If
                        Next
                    End If
                    If Not lvarWyzn Then
                        lvarTmp = New clsInhSklad
                        lvarTmp.PierwiastekId = CType(lvarCheck.Tag, clsPierwiastek).Id
                        mvarStop.Sklad.Add(lvarTmp)
                    End If
                    lvarWyzn = False
                End If
            Next
        Else
            For Each lvarCheck As CheckBox In mvarCheckList
                If lvarCheck.Checked = True Then
                    If Not lvarWyzn Then
                        lvarTmp = New clsInhSklad
                        lvarTmp.PierwiastekId = CType(lvarCheck.Tag, clsPierwiastek).Id
                        mvarStop.Sklad.Add(lvarTmp)
                    End If
                    lvarWyzn = False
                End If
            Next
        End If

    End Sub


    Private Sub dgvInformacje_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseClick
       WyczyscInfomacje()
        grbPoleEdycji.Enabled = False
    End Sub

    Private Sub dgvInformacje_CellMouseDoubleClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvInformacje.CellMouseDoubleClick

        If dgvInformacje.Rows.Count = 0 Or dgvInformacje.SelectedRows.Count = 0 Then
            MessageBox.Show("Wybierz stop.", "WIREMET")
        Else
            If mvarWyznBlokowania Then
                If mvarBlokowanie.RecordLocked Then
                    mvarBlokowanie.Unlock()
                End If
            End If
            WyczyscInfomacje()
            Blokowanie()
            txtNowaNazwa.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colNazwa").Value)
            mvarNumerPozycji = dgvInformacje.SelectedRows.Item(0).Index
            UzupelnijDane()
            cmdZmien.Enabled = True
        End If

    End Sub


    Private Sub cmdSzukaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSzukaj.Click
        Szukaj()
    End Sub

    Private Sub cmdWyczysc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWyczysc.Click
        Wyczysc()
    End Sub


    Private Sub cmdNowa_Click(sender As Object, e As EventArgs) Handles cmdNowa.Click
        If mvarWyznBlokowania Then
            If mvarBlokowanie.RecordLocked Then
                mvarBlokowanie.Unlock()
            End If
        End If
        WyczyscInfomacje()
        grbPoleEdycji.Enabled = True
        PokazPierwiastki()
        txtNowaNazwa.Focus()
        cmdZmien.Enabled = False
        dgvInformacje.ClearSelection()
    End Sub

    Private Sub cmdEdycja_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEdycja.Click

        If dgvInformacje.Rows.Count = 0 Or dgvInformacje.SelectedRows.Count = 0 Then
            MessageBox.Show("Wybierz stop.", "WIEREMET")
        Else
            If mvarWyznBlokowania Then
                If mvarBlokowanie.RecordLocked Then
                    mvarBlokowanie.Unlock()
                End If
            End If
            Blokowanie()
            txtNowaNazwa.Text = CStr(dgvInformacje.SelectedRows.Item(0).Cells("colNazwa").Value)
            txtNowaNazwa.Focus()
            UzupelnijDane()
            mvarNumerPozycji = dgvInformacje.SelectedRows.Item(0).Index
            cmdZmien.Enabled = True
        End If

    End Sub


    Private Sub cmdDodaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDodaj.Click

        If txtNowaNazwa.Text <> String.Empty Then
            mvarTmpNazwa = txtNowaNazwa.Text
            If dgvInformacje.SelectedRows.Count > 0 Then
                mvarWyznNowy = True
            End If
            ' AktualizacjaPierwiastkow()
            Zapisz()
            If mvarWyznBlokowania Then
                If mvarBlokowanie.RecordLocked Then
                    mvarBlokowanie.Unlock()
                End If
            End If
            dgvInformacje.ClearSelection()
            For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                If lvarRow.Cells("colNazwa").Value.ToString() = mvarTmpNazwa Then
                    mvarNumerPozycji = lvarRow.Index
                    dgvInformacje.Rows.Item(lvarRow.Index).Selected = True
                    Exit For
                End If
            Next
            dgvInformacje.Rows.Item(mvarNumerPozycji).Selected = True
            If mvarNumerPozycji > 4 Then
                dgvInformacje.FirstDisplayedScrollingRowIndex = mvarNumerPozycji - 4
            Else
                dgvInformacje.FirstDisplayedScrollingRowIndex = 0
            End If
        Else
            MessageBox.Show("Podaj wszystkie dane", "WIREMET")
        End If

    End Sub

    Private Sub cmdZmien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZmien.Click

        If txtNowaNazwa.Text <> String.Empty Then
            mvarTmpNazwa = txtNowaNazwa.Text
            '  AktualizacjaPierwiastkow()
            Zmien()
            If mvarWyznBlokowania Then
                If mvarBlokowanie.RecordLocked Then
                    mvarBlokowanie.Unlock()
                End If
            End If
            dgvInformacje.ClearSelection()
            For Each lvarRow As DataGridViewRow In dgvInformacje.Rows
                If lvarRow.Cells("colNazwa").Value.ToString() = mvarTmpNazwa Then
                    mvarNumerPozycji = lvarRow.Index
                    dgvInformacje.Rows.Item(lvarRow.Index).Selected = True
                    Exit For
                End If
            Next
            If mvarNumerPozycji > 4 Then
                dgvInformacje.FirstDisplayedScrollingRowIndex = mvarNumerPozycji - 4
            Else
                dgvInformacje.FirstDisplayedScrollingRowIndex = 0
            End If
        Else
            MessageBox.Show("Podaj wszystkie dane", "WIREMET")
        End If

    End Sub

    Private Sub cmdPierwiastek_Click(sender As Object, e As EventArgs) Handles cmdPierwiastek.Click

        Dim lvarFrm As New frmPierwiastek()
        With lvarFrm
            .ShowDialog()
        End With
        PokazPierwiastki()
        ' UzupelnijDane()
    End Sub


    'Private Sub frmStop_Activated(sender As Object, e As EventArgs) Handles Me.Activated
    '    mvarWyznUruchomienia = True

    'End Sub


    Private Sub frmStop_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        If mvarWyznBlokowania Then
            If mvarBlokowanie.RecordLocked Then
                mvarBlokowanie.Unlock()
            End If
        End If
        mvarDbHolder.Close()
    End Sub

    Private Sub txtNazwa_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNazwa.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then
            Szukaj()
        End If
    End Sub

End Class